
package web.reclamos.dao.sql;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import web.reclamos.beans.Departamento;
import web.reclamos.dao.DepartamentoDao;
import web.reclamos.dao.exception.ExceptionReclamos;

public class DepartamentoDaoSql  implements DepartamentoDao{

    public void crear(Departamento entidad) throws ExceptionReclamos {
        Connection cn = null;
        PreparedStatement pstm = null;
        try{
            cn = ConexionDB.getInstance().getConnection();
            String sql = "insert into departamento (id_departamento, id_area, id_empresa, id_coorporacion, nombre_departamento) values (?,?,?,?,?)";
            pstm = cn.prepareStatement(sql);
            pstm.setInt(1, entidad.getId_departamento());
            pstm.setInt(2, entidad.getArea().getId_area());
            pstm.setInt(3, entidad.getEmpresa().getId_empresa());
            pstm.setInt(4, entidad.getCoorporacion().getId_coorporacion());
            pstm.setString(5, entidad.getNombre_departamento());
            pstm.executeUpdate();
        }catch(SQLException ex){
            System.out.println(ex);
        }catch(Exception ex){
              System.out.println(ex);
        }finally{
            ConexionDB.getInstance().close(pstm);
            ConexionDB.getInstance().close(cn);
        }
    }

    public void modificar(Departamento entidad) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void eliminar(int id) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public Departamento traerPorId(int id) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public List<Departamento> traerTodo() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public List<Departamento> traerPorNombre(String nombre) {
        Connection cn = null;
        PreparedStatement pstm = null;
        ResultSet rs = null;
        List<Departamento> departamentos = new ArrayList<Departamento>();
        try{
            cn = ConexionDB.getInstance().getConnection();
            String sql = "select * from departamento where nombre_departamento like ?";
            pstm = cn.prepareStatement(sql);
            pstm.setString(1, nombre + "%");
            rs = pstm.executeQuery();
            while(rs.next()){
                departamentos.add(new Departamento(rs.getInt("id_departamento"),
                                         rs.getString("nombre_departamento")
                             ));
            }
        }catch(SQLException ex){
            System.out.println(ex);
        }catch(Exception ex){
              System.out.println(ex);
        }finally{
            ConexionDB.getInstance().close(rs);
            ConexionDB.getInstance().close(pstm);
            ConexionDB.getInstance().close(cn);
        }
        return departamentos;
    }

}
